#include "friendlistwidget.h"
#include <QHeaderView>
#include <QFont>

FriendListWidget::FriendListWidget(QWidget *parent) : QWidget(parent)
{
    // 设置主窗口样式
    setWindowTitle("好友列表");
    setMinimumSize(300, 500);

    // 主布局
    QVBoxLayout *mainLayout = new QVBoxLayout(this);
    mainLayout->setContentsMargins(0, 0, 0, 0);

    // 初始化选项卡
    initTabWidget();
    mainLayout->addWidget(tabWidget);

    // 初始化选项卡内容
    initFriendTabContent();
    initGroupTabContent();
}

// 初始化选项卡控件
void FriendListWidget::initTabWidget()
{
    tabWidget = new QTabWidget(this);

    // 设置选项卡样式
    tabWidget->setTabPosition(QTabWidget::North); // 选项卡在上方
    tabWidget->setStyleSheet("QTabBar::tab { height: 30px; width: 80px; }");
}

// 初始化“好友”选项卡内容
void FriendListWidget::initFriendTabContent()
{
    QWidget *friendTab = new QWidget(tabWidget);
    QVBoxLayout *layout = new QVBoxLayout(friendTab);
    layout->setContentsMargins(0, 0, 0, 0);

    // 创建好友树形列表
    friendTree = new QTreeWidget(friendTab);
    friendTree->setColumnCount(1);
    friendTree->header()->setVisible(false); // 隐藏表头
    friendTree->setStyleSheet("QTreeView { border: none; }");

    layout->addWidget(friendTree);

    // 添加好友分组
    addTreeItem(friendTree, "我的设备", 1, 1);
    addTreeItem(friendTree, "特别关心", 2, 4);
    addTreeItem(friendTree, "我的好友", 31, 45);
    addTreeItem(friendTree, "同学", 17, 28);
    addTreeItem(friendTree, "家人", 2, 6);

    // 将好友页添加到选项卡
    tabWidget->addTab(friendTab, "好友");
}

// 初始化“群聊”选项卡内容
void FriendListWidget::initGroupTabContent()
{
    QWidget *groupTab = new QWidget(tabWidget);
    QVBoxLayout *layout = new QVBoxLayout(groupTab);
    layout->setContentsMargins(0, 0, 0, 0);

    // 创建群聊树形列表
    groupTree = new QTreeWidget(groupTab);
    groupTree->setColumnCount(1);
    groupTree->header()->setVisible(false);
    groupTree->setStyleSheet("QTreeView { border: none; }");

    layout->addWidget(groupTree);

    // 添加群聊分组
    addTreeItem(groupTree, "我的群组", 5, 8);
    addTreeItem(groupTree, "讨论组", 0, 2);

    // 将群聊页添加到选项卡
    tabWidget->addTab(groupTab, "群聊");
}

// 向树形列表添加分组项
void FriendListWidget::addTreeItem(QTreeWidget *tree, const QString &groupName, int onlineCount, int totalCount)
{
    if (!tree) return;

    // 创建分组项
    QTreeWidgetItem *groupItem = new QTreeWidgetItem(tree);
    groupItem->setText(0, QString("%1   [%2/%3]").arg(groupName).arg(onlineCount).arg(totalCount));

    // 设置分组项字体加粗
    QFont font = groupItem->font(0);
    font.setBold(true);
    groupItem->setFont(0, font);

    // 设置分组可展开
    groupItem->setExpanded(false);

    // 添加示例成员（好友/群成员）
    if (onlineCount > 0) {
        // 在线成员（蓝色）
        QTreeWidgetItem *onlineItem = new QTreeWidgetItem(groupItem);
        onlineItem->setText(0, "在线成员1");
        onlineItem->setForeground(0, Qt::blue);

        // 再添加一个在线成员
        if (onlineCount > 1) {
            QTreeWidgetItem *onlineItem2 = new QTreeWidgetItem(groupItem);
            onlineItem2->setText(0, "在线成员2");
            onlineItem2->setForeground(0, Qt::blue);
        }
    }

    // 添加离线成员（灰色）
    QTreeWidgetItem *offlineItem = new QTreeWidgetItem(groupItem);
    offlineItem->setText(0, "离线成员1");
    offlineItem->setForeground(0, Qt::gray);
}
